package com.hsh.acte 
{
	import com.hsh.graph.Etat;
	import com.hsh.graph.Visuel;
	import flash.events.Event;
	import flash.ui.Mouse;
	import flash.ui.MouseCursor;
	/**
	 * Définit à l'arrivée si l'actif est dans un autre actif 
	 * S'il n'est pas arrivé, retourne à la base
	 * Sinon exécute la fonction reussite
	 * @author Jean-Marie@home
	 */
	public class MouvementDans extends Mouvement 
	{
		private var cible:Actif
		private var reussite:Function;
		
		/**
		 * Définit à l'arrivée si l'actif est dans un autre actif
		 * @param	actif	actif déplaçable à la souris
		 * @param	destination	cible à atteindre
		 * @param	surReussite	fx(actif, cible, ev) avant destruction du mouvement
		 */
		public function MouvementDans(actif:Actif, destination:Actif, surReussite:Function) 
		{
			cible = destination;
			reussite = surReussite;
			super(actif, evaluerPosition);
		}
		
		private function evaluerPosition(a:Actif, e:Event):void 
		{
			if (a.etat == Etat.MOUVEMENT)  Mouse.cursor = MouseCursor.HAND;
			if (a.etat == Etat.RELACHEMENT)
			{
				if (cible.contient(a))
				{
					reussite(a, cible, e);
					detruire();
				} else 
				{
					a.etat = Etat.SORTIE;
					a.placer(_base.x, _base.y);
				}
			}
		}
	}
}